package com.itheima.day13;

import java.util.Random;
import java.util.Scanner;

public class Test05 {
    public static void main(String[] args) {
        /*
        在我们进行网站登录注册时，通常都会有一个输入验证码的选项。验证码的组成通常包含：大写字母，小写字母和数
        字，验证码的长度通常为4个字符长度，不同字符的搭配完全随机。
        请使用所学知识，定义一个方法，专门用于生成随机验证码，并在主方法中完成调用，模拟用户验证码输入校验过
        程，当用户输入的验证码与系统生成验证码匹配时，给出验证通过提示，否则，重新生成验证码，要求用户重新输
        入，再重复以上匹配逻辑。实现如下效果：
         */
        while (true){
            String checkCode = getCheckCode();
            System.out.println("当前验证码: " + checkCode);
            //键盘录入用户输入的验证码
            System.out.println("请输入: ");
            Scanner sc = new Scanner(System.in);
            String s = sc.next();

            //进行比较是否相同
            if(s.equalsIgnoreCase(checkCode)){
                //正确给出提示结束循环
                System.out.println("验证通过...");
                return;
            }else {
                System.out.println("验证失败...");
            }
        }

    }
    public static String getCheckCode(){
        //定义一个随机数
        Random r = new Random();
        //定义一个大写字母字符串
        String s1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        //将大写字母变为小写字母
        String s2 = s1.toLowerCase();
        //定义一个数字字符串
        String s3 = "0123456789";
        //定义一个StringBuilder类
        StringBuilder sb = new StringBuilder(s1);
        //将三个字符串拼接在一起
        sb.append(s2).append(s3);
        String s4 = sb.toString();
        //重新定义一个StringBuilder变量
        StringBuilder sb1 = new StringBuilder();
        // 使用循环取随机数
        for(int i = 0;i < 4;i++){
            //循环四次每次从sb中取出一个字符
            int index = r.nextInt(s4.length());
            //将字符赋给ch
            char ch = s4.charAt(index);
            //将取出的字符赋给新的sb1
            sb1.append(ch);
        }
        //返回字符串
        return sb1.toString();
    }
}
